#pragma once

#include"Block.h"
#include"arg.h"

#include<iostream>

class TetrisMap {
public:
    int m_x, m_y;
    Block* BlockMap[TETRIS_ROWS][TETRIS_COLS];
    int StateMap[TETRIS_ROWS][TETRIS_COLS];
    std::pair<int, int> FallingBlocks[4];

    bool printMap();
    bool createBlocks(int style);

    TetrisMap(int x, int y);
    ~TetrisMap();
};

class TetrisNextBlock {
public:
    int m_x, m_y;

    Block* NextBlocks[4];

    bool printMap();
    bool createBlocks(int style);

    TetrisNextBlock(int x, int y);
    ~TetrisNextBlock();
};

class TetrisValue {
public:
    int m_x, m_y;
    int m_score;
    int m_speed;

    TetrisValue(int x, int y, int score = 0, int speed = 1);
    ~TetrisValue();
    bool printMap();
};

class TetrisBody {
public:
    TetrisMap* GameMap;
    TetrisNextBlock* GameNextBlock;
    TetrisValue* GameValue;

    TetrisBody();
    ~TetrisBody();
};